/**
 * 
 */
package com.p2p.trans.client.vo;

import com.p2p.trans.client.enums.AccountActionEnum;
import com.p2p.trans.client.enums.FreezeBalanceTypeEnum;
import com.p2p.trans.client.enums.RecordModelEnum;
import com.p2p.trans.client.enums.SubTransCodeEnum;
import com.p2p.trans.client.model.TransInfo;




/**
 * 可能要锁账户时的临时VO
 * 
 * @author ruiqi
 * 
 * 
 */
public class LockAccountVO {

    /** 账号 */
    private final String                accountNo;
    /** 业务代码 */
    private final SubTransCodeEnum      subTransCode;
    /** 冻结类型*/
    private final FreezeBalanceTypeEnum freezeType;
    /** 外部批次号 */
    private final String                outBatchNo;
    /** 
     * 操作动作 
     * 注意:预处理阶段,还原阶段这个值只可能是Debit或者Credit 
     */
    private final AccountActionEnum     action;
    /**
     * 借方记账模式
     */
    private final RecordModelEnum       debitRecordModel;

    /**
     * @param accountNo
     * @param subTransCode
     * @param freezeType
     * @param outBatchNo
     * @param action
     */
    public LockAccountVO(String accountNo, TransInfo transInfo, AccountActionEnum action) {
        super();
        this.accountNo = accountNo;
        this.subTransCode = transInfo.getSubTransCode();
        this.freezeType = transInfo.getFreezeType();
        this.outBatchNo = transInfo.getOutBatchNo();
        this.debitRecordModel = transInfo.getDebitRecordModel();
        this.action = action;
    }

    /**
     * @return Returns the accountNo.
     */
    public String getAccountNo() {
        return accountNo;
    }

    /**
     * @return Returns the subTransCode.
     */
    public SubTransCodeEnum getSubTransCode() {
        return subTransCode;
    }

    /**
     * @return Returns the outBatchNo.
     */
    public String getOutBatchNo() {
        return outBatchNo;
    }

    /**
     * @return Returns the action.
     */
    public AccountActionEnum getAction() {
        return action;
    }

    /**
     * @return Returns the freezeType.
     */
    public FreezeBalanceTypeEnum getFreezeType() {
        return freezeType;
    }

    /**
     * @return Returns the debitRecordModel.
     */
    public RecordModelEnum getDebitRecordModel() {
        return debitRecordModel;
    }
}

